COMP2111
System Modelling and Design
Term 1, 2024

Notes (Week 4 Monday)

These are the notes I wrote during the lecture.

   If some set of numbers A
     (i) contains Z, and
     (ii) contains S n if it contains n,

   then A contains all numbers.


   If some set of numbers A
     (B) Z ∈ A, and
     (I) n ∈ A ⇒ S n ∈ A

   then ∀n∈ℕ. n ∈ A

Q: Is the purpose to ensure the non-existence of
   "external" numbers that have no path to 0
A: Yes: it implies that the numbers obtainable by
   the axioms are the only numbers.

   If we leave out the induction axiom, then we can't
   disprove the existence of a number ω
   s.t.
       ω = S ω


           .. < 1/4 < 1/2 < 1

Q: Does observing that there's no minimal element
   prove that it's not well-founded?
A: Yes!
     R is well-founded
   is equivalent to
     every non-empty subset of R has a
      minimal element

        0 < 1 < 2 < 3

                0  >  -2 > -3


         all the numbers divisibe by 8
          ⊆                                
         all the numbers divisibe by 4
          ⊆
          all the even numbers
          ⊆
          ℕ

          ℕ ⊆ ℕ

z(λ) = λ
z(aw) = 0(z(w))


z(10w) = 0(z(0w))

 ^ the number of 0s in the arguments to z are the
   same on both left and right

open bossLib listTheory rich_listTheory
     arithmeticTheory;

Definition z_def:
  z([]) = [] ∧
  z([a]) = [0] ∧
  z(a::b::w) = 0::z(0::w)
End

Theorem z_zeroizes:
  z w = REPLICATE (LENGTH w) 0
Proof
  Induct_on ‘w’ (* structural induction *)
  >- rw[z_def] >>
  strip_tac >>
  Cases_on ‘w’
  >- rw[z_def,REPLICATE_compute] >>
  rw[z_def] >>
  Cases_on ‘t’ >> gvs[z_def]
QED

Theorem z_zeroizes:
  z w = REPLICATE (LENGTH w) 0
Proof
  Induct_on ‘LENGTH w’ using COMPLETE_INDUCTION >>
  rw[]
  Cases_on ‘w’
  >- rw[z_def] >>
  Cases_on ‘t’ >>
  gvs[z_def,REPLICATE_compute]
QED


⊤⊤∧∧∧∧∧)))))) ∈ Σ*


 a ∧ b ∨ c

 (a ∧ b) ∨ c

 a ∧ (b ∨ c)

 ¬a ∧ b     denotes    ((¬a) ∧ b)

 a ∧ b ∨ c    denotes    ((a ∧ b) ∨ c)


  p → q → r    parses as  p → (q → r)

   which is *different from*

       (p → q) → r


    p → (q → r)   ≡  (p ∧ q) → r

    if p holds,
     then if q holds, r also holds

    if p and q holds, then r holds

In the same way that in posets you can
  instantiate (R,≺) in various ways
  to obtain specific posets

We can instantiate
  T,0,1,∧,∨,'
in various ways to obtain specific boolean
 algebras

In the two-element boolean algebra
  we use &&  (like in C) for conjunction
But in propositional logic formulas
  we use ∧ for conjunction


 &&  computes a truth value

 ∧   builds a bigger formula


 true && true = true (syntactically equals)

 ⊤ ∧ ⊤ ≠ ⊤ (syntactically)

 ^ because the LHS and RHS have different
   parse trees


 𝓟(𝓤) = {{∅},∅}

 if we imagine that false = ∅
   and true = {∅}


   true && false = false


   {∅}  ∩  {}    = {}


Here's the stupidest Boolean algebra:
  the one-element algebra

  ({x},∨,∧,',x,x)

  where   x ∧ x = x
          x ∨ x = x
          x' = x

  all the laws hold in this algebra,
   because in a world where there's only
   one thing, everything is equal.

In this Boolean algebra:

   e'  = e

^ but we can't prove this from the Boolean
  algebra laws only.


  a ∧ b


  ⟦ ⟧  "semantic brackets"


  convention:

    if   φ  is a piece of syntax

    then ⟦φ⟧ reads "the semantics of φ"

  ⟦φ⟧v "the semantics of the formula φ
        under the valuation v"

  These brackets are just fancy notation
  for a function, we could call it "eval"

   instead of writing ⟦φ⟧v
   we could have written
      (say)   eval(φ,v)

2024-04-19 Fri 10:38

Announcements RSS